package main

import(

)

// 非递归，双指针方式 时间复杂度O(n), 空间复杂度 O(1)
func Reverse(src []byte)[]byte{
	i, j :=  0, len(src)-1
	for i < j {
		src[i], src[j] = src[j], src[i]
		i ++
		j --
	}
	return src
}

// 递归方式 时间复杂度O(n), 空间复杂度O(n)
// 压栈与出栈， 前面的先压入， 后出来， 每次都是接在后面
func Reverse2(src []byte)[]byte{
	if len(src) == 0 {
		return src
	}
	left := src[1:]
	next := Reverse2(left)
	out  := string(next) + string(src[0])
	return []byte(out)
}